package hikari.instruments.navmesh;

/**
 * @author Dmitry
 */
/*public class NavmeshCheckTriangleCollisionInstrument extends CameraObserveInstrument {
 ISceneNode sphere = null;

 @Override
 public void instrumentActivate() {
 super.instrumentActivate();
 sphere = Manager3D.get().getSceneManager().addSphereSceneNode(0.5f);
 sphere.setVisible(false);
 }

 @Override
 public void instrumentDeactivate() {
 super.instrumentDeactivate();
 sphere.remove();
 }

 // t1,t2,t3 - вершины треугольника
 // l1,l2 - точки прямой (должны быть с разных сторон треугольника, иначе смысла не имеет)
 // p - точка пересечения прямой и треугольника
 // функция возвращает true в случае пересечения и false иначе, в p - точка пересечения
 //^ - cross product
 //& - dot product
 boolean line_intersect_triangle(vector3df t1, vector3df t2, vector3df t3, vector3df l1, vector3df l2, vector3df p) {

 vector3df n = (t2.subtractOperator(t1).crossProduct(t3.subtractOperator(t2))).normalize();
 float d1 = ((l1.subtractOperator(t1)).dotProduct(n)) / n.getLength();
 float d2 = ((l2.subtractOperator(t1)).dotProduct(n)) / n.getLength();
 if ((d1 > 0 && d2 > 0) || (d1 < 0 && d2 < 0)) {
 return false;
 }
 p = l1.addOperator(l2.subtractOperator(l1).timesOperator(-d2 / (d2 - d1)));
 if (((t2.subtractOperator(t1)).crossProduct(p.subtractOperator(t1))).dotProduct(n) <= 0) {
 return false;
 }
 if ((t3.subtractOperator(t2).crossProduct(p.subtractOperator(t2))).dotProduct(n) <= 0) {
 return false;
 }
 if ((t1.subtractOperator(t3).crossProduct((p.subtractOperator(t3)))).dotProduct(n) <= 0) {
 return false;
 }
 return true;
 }

 @Override
 public void mouseMove(int x, int y, int dx, int dy, int modifier) {
 super.mouseMove(x, y, dx, dy, modifier);
 ISceneCollisionManager sc = Manager3D.get().getSceneManager().getSceneCollisionManager();
 line3df ray = sc.getRayFromScreenCoordinates(new vector2di(x, y));
 vector3df collisionPoint = new vector3df();
 triangle3df triangle = new triangle3df();
        
 ISceneNode collided = sc.getSceneNodeAndCollisionPointFromRay(ray, collisionPoint, triangle);
 if (collided != null) {
 vector3df cp=new vector3df();
 line_intersect_triangle(triangle.getPointA(), triangle.getPointB(), triangle.getPointC(), ray.getStart(), ray.getEnd(), cp);
 sphere.setPosition(cp);
 sphere.setVisible(true);
 } else {
 sphere.setVisible(false);
 }
 }
 }*/
